package de.hdu.tennis.dao;



import java.util.ArrayList;
import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import de.hdu.tennis.model.Mitglied;
import de.hdu.tennis.model.Reservierung;
import de.hdu.tennis.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.MessagingException;



public class MitgliedDao extends HibernateDaoSupport {

	/**
	 * Creates and saves a {@link Mitglied} object.
	 * @param vorname
	 * @param nachname
	 * @param gebdat
	 * @param telefon
	 * @param strasse
	 * @param plz
	 * @param ort
	 * @param email
	 * @param passwort
	 * @author Lilli Kardapolzew, Katharina Weber, Carolina Hirtreiter 
	 */
	
	/**
	 * returns a single mitglied by its primary db key
	 * 
	 * @param id
	 * @return the Mitglied
	 */
	public Mitglied findById(int id) {
		HibernateTemplate template = getHibernateTemplate();
		return (Mitglied) template.get(Mitglied.class, id);
	}
	
	
	public Mitglied findByLogin(String email) {
		HibernateTemplate template = getHibernateTemplate();
		@SuppressWarnings("unchecked")
		List<Mitglied> mitglied = template
				.find("from Mitglied mit where mit.email = '" + email
						+ "'");
		if (mitglied.isEmpty()) {
			return null;
		} else {
			return (Mitglied) template.get(Mitglied.class, mitglied
					.get(0).getId());
		}
	}

	public Mitglied save(Mitglied mitglied) throws AddressException, MessagingException {
		HibernateTemplate template = getHibernateTemplate();
		template.saveOrUpdate(mitglied);
		
		String recipient = mitglied.getEmail();        
		String subject = "Registrierungsbestätigung TennisHDU";
		String newline = System.getProperty("line.separator");
		String Begtext = "Vielen Dank für Ihre Registrierung! " + 
				newline + "Sie wurden bei uns als neues Mitglied, mit folgenden Daten, eingetragen ";
		String Nachname = "Nachname: " + mitglied.getNachname();
		String Vorname = "Vorname: " + mitglied.getVorname();
		String Straße = "Strasse: " + mitglied.getStrasse();
		String PLZ = "PLZ: " + mitglied.getPlz();
		String Ort = "Ort: " + mitglied.getOrt();
		String Pwd = "Ihr Passwort lautet: " + mitglied.getPasswort() + newline ;
		String Gebdat = "Ihr Geburtsdatum: " + mitglied.getGebdat();
		     
//      Hier wird der E-mail-text zusammengesetzt und als String übergeben. Gleichzeitig findet die Auswahl des
//      MailAccounts und des Empfängers statt.
        

String text = Begtext + newline + newline + 
			  Nachname  + newline  + 
			  Vorname  + newline  + 
			  Straße  + newline  + 
			  PLZ  + newline  + 
			  Ort  + newline  + 
			  Pwd  + newline + 
			  Gebdat ;
 
/**
* Methode zum verschicken der E-Mail. Exception (z.B. UnknownHostException) werden global abgefangen
*/       
        

try {      
Mail.send(MailAccounts.GOOGLEMAIL, recipient, subject, text);  }       
catch (Exception e) 
{                      
        
}
	return mitglied;
}

	
	public void delete(Mitglied mitglied) {
		HibernateTemplate template = getHibernateTemplate();
		template.delete(mitglied);
	}
	
	/**
	 * @return all Mitglied objects from the database.
	 */
	
	public List<Mitglied> findAll() {
		HibernateTemplate template = getHibernateTemplate();
		return template.loadAll(Mitglied.class);
	}
	
}